var geocoder = new google.maps.Geocoder();
var geocoder;
var map;
//var marker;
 
function initialize(){
//Определение карты
  var latlng = new google.maps.LatLng(56.329917,44.009191999999985);
  var options = {
    zoom: 3,
    center: latlng,
    mapTypeId: google.maps.MapTypeId.SATELLITE
  };
 
  map = new google.maps.Map(document.getElementById("map_canvas"), options);
 
  //Определение геокодера
  geocoder = new google.maps.Geocoder();
 
  marker = new google.maps.Marker({
    map: map,
    draggable: false
  });
 
} //end initialize



//поиск начальной точки маршрута
$(document).ready(function() { 
 
  initialize();
 
  $(function() {
    $("#start").autocomplete({
      //Определяем значение для адреса при геокодировании
      source: function(request, response) {
        geocoder.geocode( {'address': request.term}, function(results, status) {
          response($.map(results, function(item) {
            return {
              label:  item.formatted_address,
              value: item.formatted_address,
              latitude: item.geometry.location.lat(),
              longitude: item.geometry.location.lng()
            }
          }));
        })
      },      
      //Выполняется при выборе конкретного адреса
      select: function(event, ui) {
        $("#latitude").val(ui.item.latitude);
        $("#longitude").val(ui.item.longitude);
        var location = new google.maps.LatLng(ui.item.latitude, ui.item.longitude);
        marker.setPosition(location);
        map.setCenter(location);
      }
    });
  });
 
  //Добавляем слушателя события обратного геокодирования для маркера при его перемещении  
 /* google.maps.event.addListener(marker, 'drag', function() {
    geocoder.geocode({'latLng': marker.getPosition()}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        if (results[0]) {
          $('#start').val(results[0].formatted_address);
          $('#latitude').val(marker.getPosition().lat());
          $('#longitude').val(marker.getPosition().lng());
        }
      }
    });
  });//end seach start point*/
 
 

//поиск конечной точки маршрута
 
  $(function() {
    
     // alert('значение id c автокомплита'+id);
    $("#end").autocomplete({
      //Определяем значение для адреса при геокодировании
      source: function(request, response) {
        geocoder.geocode( {'address': request.term}, function(results, status) {
          response($.map(results, function(item) {
            return {
              label:  item.formatted_address,
              value: item.formatted_address,
              latitude: item.geometry.location.lat(),
              longitude: item.geometry.location.lng()
            }
          }));
        })
      },
      //Выполняется при выборе конкретного адреса
      select: function(event, ui) {
        $("#latitudeEnd").val(ui.item.latitude);
        $("#longitudeEnd").val(ui.item.longitude);
        var location = new google.maps.LatLng(ui.item.latitude, ui.item.longitude);
        marker.setPosition(location);
        map.setCenter(location);
      }
    });
  });
 
  //Добавляем слушателя события обратного геокодирования для маркера при его перемещении  
  /*google.maps.event.addListener(marker, 'drag', function() {
    geocoder.geocode({'latLng': marker.getPosition()}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        if (results[0]) {
          $('#end').val(results[0].formatted_address);
          $('#latitudeEnd').val(marker.getPosition().lat());
          $('#longitudeEnd').val(marker.getPosition().lng());
        }
      }
    });
  });//end seach end point*/
 
 //расчет маршрута
 function calcRoute() {
        var start = document.getElementById('start').value;
        var end = document.getElementById('end').value;
        var request = {
          origin: start,
          destination: end,
          travelMode: google.maps.DirectionsTravelMode.DRIVING
        };
        directionsService.route(request, function(response, status) {
          if (status == google.maps.DirectionsStatus.OK) {
            directionsDisplay.setDirections(response);
          }
        });
      }
}); //end ready